import os
import shutil
import sys
from pathlib import Path

def migrate_data():
    """迁移数据库和日志文件到AppData目录，并返回新的文件路径"""
    # 确定应用根目录
    if getattr(sys, 'frozen', False):
        # 打包后的应用
        app_root = os.path.dirname(sys.executable)
    else:
        # 开发环境
        app_root = os.path.dirname(os.path.abspath(__file__))
    
    # 使用Windows的AppData目录作为统一存储位置
    appdata_dir = os.path.join(os.environ.get('APPDATA', ''), "RobotZL")
    os.makedirs(appdata_dir, exist_ok=True)
    
    # 设置数据库和日志文件路径
    old_db = os.path.join(app_root, "robot_zl.db")
    old_log = os.path.join(app_root, "robot_debug.log")
    appdata_db = os.path.join(appdata_dir, "robot_zl.db")
    appdata_log = os.path.join(appdata_dir, "robot_debug.log")
    
    # 迁移数据库 - 只有在新地址没有文件时才移动
    if os.path.exists(old_db) and not os.path.exists(appdata_db):
        shutil.copy2(old_db, appdata_db)
        print(f"已将数据库从 {old_db} 迁移到 {appdata_db}")
    elif os.path.exists(old_db) and os.path.exists(appdata_db):
        print(f"新地址 {appdata_db} 已存在数据库文件，跳过迁移")
    
    # 迁移日志 - 只有在新地址没有文件时才移动
    if os.path.exists(old_log) and not os.path.exists(appdata_log):
        shutil.copy2(old_log, appdata_log)
        print(f"已将日志从 {old_log} 迁移到 {appdata_log}")
    elif os.path.exists(old_log) and os.path.exists(appdata_log):
        print(f"新地址 {appdata_log} 已存在日志文件，跳过迁移")
    
    print("数据迁移完成！")
    
    # 返回新的文件路径，供其他模块使用
    return {
        "db_path": appdata_db,
        "log_file": appdata_log
    }

if __name__ == "__main__":
    migrate_data()